import request from '@/config/axios'
import type { Dayjs } from 'dayjs';

/** 传感器信息 */
export interface Sensors {
          sensorId: number; // ID
          sensorDeleted?: boolean; // 0未删除1删除
          sensorClass?: string; // 传感器的类别，如 temperature	（温度）、voltage	（电压）、fanspeed	（风扇转速）、current	（电流）等
          deviceId?: number; // 设备ID
          pollerType?: string; // 数据采集方式，通常为 'snmp'	，也可能支持 'agent'	 或 'ipmi'	 等，表示使用何种协议或代理获取数据。
          sensorOid?: string; // SNMP OID 字符串，用于 SNMP 查询获取该传感器的原始值。
          sensorIndex: string; // SNMP 表中的索引值，用于区分同一类型多个传感器（如多个风扇或温度探头）
          sensorType?: string; // 传感器的具体型号或类型标识，如 apc-temperature	、cisco-envmon	，用于识别传感器来源或硬件类型。
          sensorDescr: string; // 传感器的描述信息，通常为用户可读的名称，如 "CPU Temperature" 或 "Fan 1 Speed"。
          group: string; // 传感器分组名称，可用于前端界面按组展示（如“电源”、“环境”等）。
          sensorDivisor?: number; // 除数，用于将原始采集值转换为实际物理值（实际值 = 原始值 × multiplier / divisor	）。常用于单位换算（如 mV 转 V）。
          sensorMultiplier?: number; // 乘数，用于将原始采集值转换为实际物理值（实际值 = 原始值 × multiplier / divisor	）。
          sensorCurrent: number; // 当前采集到的传感器数值（已换算），由轮询器更新。
          sensorLimit: number; // 传感器的上限阈值
          sensorLimitWarn: number; // 传感器的上限警告阈值，超过此值触发警告告警。
          sensorLimitLow: number; // 传感器的下限阈值
          sensorLimitLowWarn: number; // 传感器的下限告警阈值，低于此值触发严重告警。
          sensorAlert?: boolean; // 是否启用告警：1	 启用，0	 禁用。
          sensorCustom?: string; // 是否为用户自定义传感器：Yes	 表示由用户手动添加，No	 表示由系统自动发现。
          entPhysicalIndex: string; // 对应于 SNMP 的 ENTITY-MIB	 中的 entPhysicalIndex	，用于定位硬件实体
          entphysicalindexMeasured: string; // 指明该传感器测量的是哪个硬件实体（如 temperature	, power	 等），用于关联物理组件。
          lastupdate?: string | Dayjs; // 最后一次更新时间，每次数据更新时自动刷新为当前时间戳。
          sensorPrev: number; // 上一次采集的传感器值，用于计算变化率或检测突变
          userFunc: string; // 用户自定义处理函数名称（PHP 函数），用于对原始值进行特殊处理。
          rrdType?: string; // rrd_type
  }

// 传感器 API
export const SensorsApi = {
  // 查询传感器分页
  getSensorsPage: async (params: any) => {
    return await request.get({ url: `/business/sensors/page`, params })
  },

    // 查询当前值
    getCurrent: async (params: any) => {
      return await request.get({ url: `/business/sensors/getCurrent`, params })
    },
  

  // 查询传感器详情
  getSensors: async (id: number) => {
    return await request.get({ url: `/business/sensors/get?id=` + id })
  },

  // 新增传感器
  createSensors: async (data: Sensors) => {
    return await request.post({ url: `/business/sensors/create`, data })
  },

  // 修改传感器
  updateSensors: async (data: Sensors) => {
    return await request.put({ url: `/business/sensors/update`, data })
  },

  // 删除传感器
  deleteSensors: async (id: number) => {
    return await request.delete({ url: `/business/sensors/delete?id=` + id })
  },

  /** 批量删除传感器 */
  deleteSensorsList: async (ids: number[]) => {
    return await request.delete({ url: `/business/sensors/delete-list?ids=${ids.join(',')}` })
  },

  // 导出传感器 Excel
  exportSensors: async (params) => {
    return await request.download({ url: `/business/sensors/export-excel`, params })
  },
}
